<!DOCTYPE html>
<html lang="zh-cmn-Hans">

	<head>
		<meta http-equiv="Expires" content="0" />
		<meta http-equiv="Pragma" content="no-cache" />
		<meta http-equiv="Cache-control" content="no-cache" />
		<meta http-equiv="Cache" content="no-cache" />
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
		<title>烤箱进出烤和点检程序</title>
		<link rel="stylesheet" href="../layui/css/layui.css" />
	</head>

	<body>
		<fieldset class="layui-elem-field site-demo-button">
			<legend><big><b>烤箱进出烤和点检程序</b></big></legend>
			<div class="layui-fluid layui-form layui-form-pane">
				<div class="layui-row layui-form-item">
					<label class="layui-form-label">扫描二维码:</label>
					<div class="layui-input-block">
						<input class="layui-input" placeholder="请扫入特定的二维码" id="qr" type="text" />
					</div>
				</div>
			</div>
		</fieldset>

		<fieldset class="layui-elem-field site-demo-button">
			<legend><big><b>这里是当前扫描的信息组合</b></big></legend>
			<div id="DQ" class="layui-fluid layui-form layui-form-pane">
				注:<big><b>※</b></big>号为必扫项目
				<div class="layui-row">
					<div class="layui-col-sm6">
						<label class="layui-form-label"><big><b>※</b></big>员工工号:</label>
						<div class="layui-input-block">
							<input class="layui-input" readonly=true placeholder="这里是必填项※员工工号(请扫入工号)" id="YGGH" type="text" />
						</div>
					</div>

					<div class="layui-col-sm6">
						<label class="layui-form-label">员工姓名:</label>
						<div class="layui-input-block">
							<input class="layui-input" readonly=true placeholder="这里是员工姓名(根据工号自动产生)" id="YGXM" type="text" />
						</div>
					</div>
				</div>

				<div class="layui-row">
					<div class="layui-col-sm6">
						<label class="layui-form-label"><big><b>※</b></big>当前烤箱:</label>
						<div class="layui-input-block">
							<input class="layui-input" readonly=true placeholder="这里是必填项※当前烤箱(请扫入烤箱号)" id="DQKX" type="text" />
						</div>
					</div>

					<div class="layui-col-sm6">
						<label class="layui-form-label">烘烤类型:</label>
						<div class="layui-input-block">
							<input class="layui-input" readonly=true placeholder="这里是烘烤类型(根据烤箱号自动产生)" id="HKLX" type="text" />
						</div>
					</div>

					<div class="layui-col-sm6">
						<label class="layui-form-label"><big><b>※</b></big>当前箱门:</label>
						<div class="layui-input-block">
							<input class="layui-input" readonly=true placeholder="这里是必填项※当前箱门" id="DQKXM" type="text" />
						</div>
					</div>

					<div class="layui-col-sm6">
						<label class="layui-form-label"><big><b>※</b></big>工单号:</label>
						<div class="layui-input-block">
							<input class="layui-input" readonly=true placeholder="这里是必填项※当前工单号" id="DQGDH" type="text" />
						</div>
					</div>

					<div class="layui-row">
						<div class="layui-form-item layui-form-text layui-col-sm12">
							<label class="layui-form-label ">烘烤条件:</label>
							<div class="layui-input-block">
								<textarea placeholder="这里是烘烤条件(根据烤箱号自动产生)" class="layui-textarea" id="HKTJ"></textarea>
							</div>
						</div>
					</div>

					<div class="layui-row">
						<div class="layui-form-item layui-form-text layui-col-sm12">
							<label class="layui-form-label ">烤箱的其他附加信息:</label>
							<div class="layui-input-block">
								<textarea placeholder="这里是烤箱的其他附加信息(根据烤箱号自动产生)" class="layui-textarea" id="FJXX"></textarea>
							</div>
						</div>
					</div>
				</div>
			</div>
		</fieldset>

		<fieldset class="layui-elem-field site-demo-button">
			<legend><big><b>烤箱进出烤信息(只Show当前烤箱的信息)</b></big></legend>
			<div class="layui-form layui-form-pane">
				<div id="YC" class="layui-row"></div>
			</div>

			<div class="layui-row">
				<table class="layui-table lay-even">
					<thead>
						<tr class="table-active">
							<th width="10%" scope="col">工令<br>单号</th>
							<th width="10%" scope="col">基准<br>片数</th>
						</tr>
					</thead>
					<tbody id="blues">
					</tbody>
				</table>
			</div>
		</fieldset>

		<!-- 加载jQuery文件 -->
		<script src="../js/jquery.min.js"></script>
		<!-- 加载类ui文件 -->
		<script src="../layui/layui.js"></script>
		<!-- 写脚本 -->
		<script>
			var STR2 = { //这里开始写入s2的对照表
				"BP": "DQKX",
				"EM": "YGGH"
			} //s2对照表的尾巴
			var HKLX = {} //烘烤类型的字典
			var HKTJ = {} //烘烤条件的字典
			var FJXX = {} //附加信息的字典
			var XM = {} //姓名的字典
			var GD = {} //工单信息的字典
			var htmlstr = ""; //网页的文本
			var IO = "INTO"; //IO控制是进烤还是出烤
			$(document).ready(function() { //这里是画面准备完毕后执行的程式
				layui.use(['layer', 'form', 'element'], function() { //载入layui模块
					layer.msg('初始化正常!'); //layer弹出层,form表单,element元素组件做分页或其他
					if(localStorage.kxyggh) { //如果HTML5WEB存储存在,就查询,否则就弹窗提示
						$("#YGGH").val(localStorage.kxyggh);
						$.ajax({ //阿贾克斯
							type: 'POST',
							url: "XMandKX.php", //POST傳一個超長字串到後端
							data: "GongHao=" + $("#YGGH").val() + "&KaoXiangHao=&KXMen=",
							dataType: "JSON",
							success: function(sss) {
								layer.msg('查询成功'); //,返回信息: '+sss);
								//把姓名循环写到XM的字典里面
								for(var i = 0; i < sss['XM'].length; i++) {
									XM[sss['XM'][i]['QR']] = sss['XM'][i]['Name'];
								}
								for(var i = 0; i < sss['KX'].length; i++) {
									HKLX[sss['KX'][i]['KaoXiangHao']] = sss['KX'][i]['HongKaoLeiXing'];
									HKTJ[sss['KX'][i]['KaoXiangHao']] = sss['KX'][i]['HongKaoTiaoJian'];
									FJXX[sss['KX'][i]['KaoXiangHao']] = sss['KX'][i]['FJXX'];
								}
								$("#YGXM").val(XM[$("#YGGH").val()]); //把姓名单独查出来
							} //成功尾巴
						}); //阿贾克斯程序尾巴
					} else {
						layer.msg("请扫工号牌");
					} //判断员工工号的WEB存储是否存在程序尾巴
				});
				//画面准备完毕后就选择扫码输入框
				$("#qr").select();
			});
			$("#qr").click(function() {
				$("#qr").select();
			});
			$("#qr").keypress(function(e) { //这里是扫描输入框的回车按下后执行的程式
				if(e.keyCode === 13) { //如果按下的键值是回车键13就执行以下语句
					$("#qr").select(); //扫描输入框选择
					var QRC = $("#qr").val(); //定义局部变量QRC=扫描输入框的值
					var s2 = QRC.substr(0, 2); //取前面两个字符进行下面的判断
					var s3 = QRC.substr(0, 3); //取前面三个字符进行下面的判断
					//如果2字符的字典包含就处理结果: 把条码写入对应的ID框
					//要优先判断工单号,判断不通过后再轮到EM和BP
					if(/^\d{1,2}$/.test(QRC)) {
						var sqty = QRC * 1;
						if(sqty <= 20) {
							GD[$("#DQGDH").val()] = sqty; //当前工单号的数量被修改,每次存到数组字典中
							layer.msg(JSON.stringify(GD)); //转成JSON文本查错
							$("#blues").html("");
							for(var key in GD) {
								try {
									var value = GD[key];
									htmlstr = "<tr><td>" + key + "</td><td>" + value + "</td></tr>";
									$("#blues").prepend(htmlstr);
								} catch(e) {}
							}
						} else {
							layer.msg("请确认当前料盒的装片上限!");
						}
					} else if(QRC === "INTO") {
						$.ajax({ //当动作是进烤的时候开始写数据库的语句
							type: 'POST',
							url: "KX.php",
							data: "IO=" + QRC + "&GongHao=" + $("#YGGH").val() + "&KaoXiangHao=" + $("#DQKX").val() + "&KXMen=" + $("#DQKXM").val() + "&GD=" + JSON.stringify(GD), //POST傳一個超長字串到後端
							dataType: "JSON",
							success: function(sss) {
								layer.msg(sss['ZT']);
							} //阿贾克斯成功程序尾巴
						}); //阿贾克斯尾巴
					} else if(QRC === "OUT") {
						$.ajax({ //当动作是进烤的时候开始写数据库的语句
							type: 'POST',
							url: "KX.php",
							data: "IO=" + QRC + "&GongHao=" + $("#YGGH").val() + "&KaoXiangHao=" + $("#DQKX").val() + "&KXMen=" + $("#DQKXM").val() + "&GD=" + JSON.stringify(GD), //POST傳一個超長字串到後端
							dataType: "JSON",
							success: function(sss) {
								if(sss['ZT'] == "出烤成功") {
									$("#blues").html("");
									GD = {}
								}
								layer.msg(sss['ZT']);
							} //阿贾克斯成功程序尾巴
						}); //阿贾克斯尾巴
					} else if(QRC === "A" || QRC === "B" || QRC === "C" || QRC === "D") {
						$("#DQKXM").val(QRC);
						//这里要增加阿贾克斯,查询当前机台是否有进烤,如果有就弄出来,等待出烤
						$.ajax({ //阿贾克斯
							type: 'POST',
							url: "XMandKX.php", //POST傳一個超長字串到後端
							data: "GongHao=" + $("#YGGH").val() + "&KaoXiangHao=" + $("#DQKX").val() + "&KXMen=" + $("#DQKXM").val(),
							dataType: "JSON",
							success: function(sss) {
								layer.msg('查询成功'); //,返回信息: '+sss);
								//把姓名循环写到XM的字典里面
								for(var i = 0; i < sss['XM'].length; i++) { //姓名字典
									XM[sss['XM'][i]['QR']] = sss['XM'][i]['Name'];
								}
								for(var i = 0; i < sss['KX'].length; i++) { //烤箱字典
									HKLX[sss['KX'][i]['KaoXiangHao']] = sss['KX'][i]['HongKaoLeiXing'];
									HKTJ[sss['KX'][i]['KaoXiangHao']] = sss['KX'][i]['HongKaoTiaoJian'];
									FJXX[sss['KX'][i]['KaoXiangHao']] = sss['KX'][i]['FJXX'];
								}
								if(sss['DCK'].length > 0) { //待出烤信息
									$("#DQKXM").val(sss['DCK'][0]['KXMen']); //查出当前烤箱门
									$("#blues").html("");
									for(var i = 0; i < sss['DCK'].length; i++) {
										GD[sss['DCK'][i]['GongDanHao']] = sss['DCK'][i]['PCS']; //每次存到数组字典中
										htmlstr = "<tr><td>" + sss['DCK'][i]['GongDanHao'] + "</td><td>" + sss['DCK'][i]['PCS'] + "</td></tr>";
										$("#blues").prepend(htmlstr);
									}
									IO = "OUT"; //控制可以出烤
								} else {
									IO = "INTO"; //控制可以进烤
									$("#blues").html("当前机台现在没有在烤材料");
								}
								$("#YGXM").val(XM[$("#YGGH").val()]); //把姓名单独查出来
							} //成功尾巴
						}); //阿贾克斯程序尾巴
						GD = {}
					} else if(s2 === "TA" && $("#YGGH").val() !== "" && $("#DQKX").val() !== "" && $("#DQKXM").val() !== "") { //工号烤箱和门都有了就开始处理组装规格书的
						//TAAK17B2681-2 T2865811K-Q4801A 10 002
						//TAAK17B2681-X T2865811K-Q4801A 20 001
						var patt1 = /[A-Z]{1,2}[A-Z\d]*-?[AX\d]?(?= T)/; //AK17B2681-2 =>
						var patt2 = /\d{3}$/; //002
						var patt3 = /\d+(?= \d{3}$)/; //基准片数
						var patt4 = /^TA/; //非V8引擎下报错,所以要替换掉开头的TA再来匹配
						var zzggsstr = QRC.replace(patt4, ""); //组装规格书文本替换掉TA开头的结果
						if(patt1.test(zzggsstr)) { //验证工单号是否通过正则
							var string2 = patt1.exec(zzggsstr) + "-" + patt2.exec(zzggsstr);
							var pcs = 1 * patt3.exec(zzggsstr);
							//正则判断通过,然后ajax呼叫API进行判断,如果判断不通过,就弹窗提示,然后return
							$.ajax({
								type: 'POST',
								url: "http://172.31.3.27:84/index.php?s=/tdled/kaoxiang/yz", //172.31.3.27:84//127.0.0.1:85
								data: "yggh=" + localStorage.kxyggh + "&kxh=" + $("#DQKX").val() + "&gdh=" + string2,
								dataType: "JSON",
								success: function(sss) {
									if(sss.msg != '大吉大利') {
										layer.msg('<div style="background-color: #FF5722;"><big><b>' + sss.msg + '</b></big></div>');
										if(sss.zt == "outsub") {
											return;
										}
									} else {
										//layer.msg("流水号:" + string2 + "<br/>基准片数:" + pcs + "片");
										//这里先写到数组,然后再把数组丢到PHP一次做完
										//console.log("请开始你的表演");
										GD[string2] = pcs; //每次存到数组字典中
										layer.msg(JSON.stringify(GD)); //转成JSON文本查错
										$("#DQGDH").val(string2); //当前工单号
										$("#blues").html("");
										for(var key in GD) {
											try {
												var value = GD[key];
												htmlstr = "<tr><td>" + key + "</td><td>" + value + "</td></tr>";
												$("#blues").prepend(htmlstr);
											} catch(e) {}
										}
									}
								}
							});
						} else {
							layer.msg('<div style="background-color: #FF5722;"><big><b>正则不通过，<br/>请检查组装规格书<br/>【工单号】的命名方式<br/>是否正确！</b></big></div>');
						} //正则程序的尾巴
					} else if(STR2[s2]) { //否则如果在s2对照表里面有就写对应的位置
						$("#" + STR2[s2]).val(QRC);
						if(s2 === "EM") { //判断如果是工号就写WEB存储
							localStorage.kxyggh = QRC;
							location.reload(); //如果是工号,还要清除字典内容,重新来过...所以干脆刷新一下好了
						} else if(s2 === "BP") { //如果是机台号就判断是不是烤箱
							if(s3 === "BPK" && HKLX[$("#DQKX").val()]) { //如果是BPK就
								$("#DQKXM").val(""); //查询烤箱的时候先把烤箱门清掉,同理选择烤箱门的时候要刷新数据
								$("#HKLX").val(HKLX[$("#DQKX").val()]); //烘烤类型单独查出来
								$("#HKTJ").val(HKTJ[$("#DQKX").val()]); //烘烤条件单独查出来
								$("#FJXX").val(FJXX[$("#DQKX").val()]); //附加信息单独查出来
								$("#blues").html("请继续扫入烤箱门号");
								GD = {}
							} else { //否则不是烤箱号就提醒,然后清掉烤箱号
								layer.msg('烤箱号不正确<br/>或未扫入员工工号牌!');
								$("#DQKX").val("");
								$("#DQKXM").val(""); //查询烤箱的时候先把烤箱门清掉,同理选择烤箱门的时候要刷新数据
							}
						} //机台判断烤箱程序尾巴
					} else {
						layer.msg('<div style="background-color: #FF5722;"><big><b>当前二维码无法运行，<br/>请确认当前进出烤信息<br/>必填项是否都有扫入！</b></big></div>');
					} //s2程序的尾巴
				} //回车的程序尾巴
			});
			$("#qr").blur(function() {
				layer.msg('输入框焦点失去了,将重新选择输入框!<br/><small><small>ps:此提示会自动消失</small></small>');
				$("#qr").select();
			});
			Date.prototype.format = function(fmt) { //这里是日期格式化公式
				var o = { //格式化文本的正则表达式对照表(巧妙的用法)
					"M+": this.getMonth() + 1, //月份
					"d+": this.getDate(), //日
					"h+": this.getHours(), //小时
					"m+": this.getMinutes(), //分
					"s+": this.getSeconds(), //秒
					"q+": Math.floor((this.getMonth() + 3) / 3), //季度
					"S": this.getMilliseconds() //毫秒
				} //对照表尾巴
				if(/(y+)/.test(fmt)) { //先判断有多少个y(年的格式)
					fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
				} //年格式的尾巴
				for(var k in o) { //循环k
					if(new RegExp("(" + k + ")").test(fmt)) { //对年月日时分秒毫秒的格式判断
						fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
					} //月日时分秒毫秒的格式化文本正则验证尾巴
				} //k的尾巴
				return fmt;
			} //日期格式化的程序尾巴
		</script>
	</body>

</html>